import axios from 'axios'
import qs from 'qs'
// import {
// 	ElMessage
// } from 'element-plus';
// var xsrfCookieName;

const http = {}
let withCredential;
if(process.env.NODE_ENV == 'development') {
	withCredential = false; // 开发环境/测试环境
} else if(process.env.NODE_ENV == 'production') {
	withCredential = false; 
} else if(process.env.NODE_ENV == 'test') {
	withCredential = false; // 开发环境/测试环境
}

const Axios = axios.create({
	timeout: 200000,
	withCredentials: withCredential,
	baseURL: 'https://ti.zsanyu.com/api',
	// baseURL: 'http://36.137.224.120:9501',
	headers: {
		'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
	},
	validateStatus(status) {
		// switch (status) {
		// 	case 200:
		// 		ElMessage({
		// 			showClose: true,
		// 			message: '请求成功',
		// 			type: 'success'
		// 		})
		// 		break;
		// 	case 400:
		// 		ElMessage({
		// 			showClose: true,
		// 			message: '请求出错',
		// 			type: 'error'
		// 		})
		// 		break;
		// 	case 401:
		// 		ElMessage({
		// 			showClose: true,
		// 			message: '授权失败，请重新登录',
		// 			type: 'error'
		// 		})
		// 		localStorage.removeItem('username')
		// 		this.$router.replace('/login')
		// 		return;
		// 	case 422:
		// 		ElMessage({
		// 			showClose: true,
		// 			message: '参数错误，请检查填写的参数',
		// 			type: 'error'
		// 		})
		// 		return;
		// 	case 403:
		// 		ElMessage({
		// 			showClose: true,
		// 			message: '拒绝访问',
		// 			type: 'error'
		// 		})
		// 		break;
		// 	case 404:
		// 		ElMessage({
		// 			showClose: true,
		// 			message: '请求错误,未找到该资源',
		// 			type: 'error'
		// 		})
		// 		break;
		// 	case 500:
		// 		ElMessage({
		// 			showClose: true,
		// 			message: '请重新登录',
		// 			type: 'error'
		// 		})
		// 		break;
		// }
		return status >= 200 && status < 300
	}
});


// 请求拦截
Axios.interceptors.request.use(config => {
	return config
}, err => {
	return Promise.reject(err)
})

// 响应拦截
Axios.interceptors.response.use(res => {
	if (res.status === 200 && res.config.url === "/login") {
		return res;
	} else if (res.status === 200) {
		return res;
	}
}, err => {
	console.log(err.response.data)
	switch (err.response.status) {
		case 300:
			// ElMessage({
			// 	showClose: true,
			// 	message: '需要修改密码,请先修改密码',
			// 	type: 'error'
			// })
			break;
		case 401:
			// ElMessage({
			// 	showClose: true,
			// 	message: err.response.data.msg ? err.response.data.msg : err.response.data.message,
			// 	type: 'error'
			// })
			window.location.href = 'http://14.29.143.198:9080/admin/auth/logout'
			sessionStorage.clear();
			window.location.reload();
			// this.$router.replace('/login');
			break;
		case 422:
			// ElMessage({
			// 	showClose: true,
			// 	message: err.response.data.msg ? err.response.data.msg : err.response.data.message,
			// 	type: 'error'
			// })
			break;
		case 403:
			// ElMessage({
			// 	showClose: true,
			// 	message: err.response.data.msg ? err.response.data.msg : err.response.data.message,
			// 	type: 'error'
			// })
			break;
		case 404:
			// ElMessage({
			// 	showClose: true,
			// 	message: err.response.data.msg ? err.response.data.msg : err.response.data.message,
			// 	type: 'error'
			// })
			break;
		case 500:
			// ElMessage({
			// 	showClose: true,
			// 	message: err.response.data.msg ? err.response.data.msg : err.response.data.message,
			// 	type: 'error'
			// })
			break;
	}
	return Promise.reject(err)
	// if (err.response.data.msg === 'need login') {
	// 	ElMessage({
	// 		showClose: true,
	// 		message: '请重新登录',
	// 		type: 'error'
	// 	})
	// }
	// return Promise.reject(err)
})


http.get = function(url, data = {}) {
	return new Promise((resolve, reject) => {
		Axios.get(url, {
			params: data
		}).then(res => {
			resolve(res)
		}).catch(err => {
			reject(err);
		})
	})
}

http.del = function(url, data = {}) {
	return new Promise((resolve, reject) => {
		Axios.delete(url, {
			params: data
		}).then(res => {
			resolve(res)
		}).catch(err => {
			reject(err);
		})
	})
}

http.post = function(url, data) {
	return new Promise((resolve, reject) => {
		Axios.post(url, qs.stringify(data)).then(res => {
			resolve(res)
		}).catch(err => {
			reject(err);
		})
	})
}

export default http
